﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain.MainModule.Entities;

namespace Application.MainModule.CustomersManagement
{
    public interface ICustomerManagementService
    {
        /// <summary>
        /// Add new customer
        /// </summary>
        /// <param name="customer">Customer to be added</param>
        void AddCustomer(Customer customer);

        /// <summary>
        /// Change existing customer
        /// </summary>
        /// <param name="customer">Existing customer to modify</param>
        void ChangeCustomer(Customer customer);

        /// <summary>
        /// Remove existing customer
        /// </summary>
        /// <param name="customer">Customer to remove</param>
        void RemoveCustomer(Customer customer);

        /// <summary>
        /// Find Customers in paged mode
        /// </summary>
        /// <param name="pageIndex">Index of page</param>
        /// <param name="pageCount">Number or elements in each page</param>
        /// <returns>A collection of Customer</returns>
        List<Customer> FindPagedCustomers(int pageIndex, int pageCount);

        /// <summary>
        /// Find and customer using his user id
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        Customer FindCustomerByUserId(Guid userId);

        /// <summary>
        /// Find a customer by Id
        /// </summary>
        /// <param name="customerId">Id</param>
        /// <returns>a costumer</returns>
        Customer FindCustomerById(Guid customerId);

    }
}
